/**
 * 分享配置 Hook
 * 提供小程序分享功能配置
 *
 * @example
 * ```typescript
 * import { useShare } from '@/hooks/useCommon'
 *
 * // 在页面的 onShareAppMessage 中使用
 * onShareAppMessage(() => {
 *   const { getShareConfig } = useShare()
 *   return getShareConfig()
 * })
 *
 * // 或者自定义分享配置
 * onShareAppMessage(() => {
 *   const { getShareConfig } = useShare({
 *     title: '自定义标题',
 *     path: '/pages/custom/index'
 *   })
 *   return getShareConfig()
 * })
 * ```
 */

interface ShareConfig {
    /** 分享标题 */
    title?: string;
    /** 分享路径 */
    path?: string;
    /** 分享图片 */
    imageUrl?: string;
}

interface ShareReturn {
    /** 获取分享配置 */
    getShareConfig: () => ShareConfig;
    /** 更新分享配置 */
    updateShareConfig: (config: Partial<ShareConfig>) => void;
}

export default function useShare(customConfig?: ShareConfig): ShareReturn {
    // 默认分享配置
    const defaultConfig: ShareConfig = {
        title: "点击查看资源地址",
        path: "/pages/index/index",
        imageUrl: "https://static.dqqljf.cn/img/shareVideo.jpg"
    };

    // 合并配置
    let shareConfig: ShareConfig = {
        ...defaultConfig,
        ...customConfig
    };

    /**
     * 获取分享配置
     */
    const getShareConfig = (): ShareConfig => {
        return { ...shareConfig };
    };

    /**
     * 更新分享配置
     */
    const updateShareConfig = (config: Partial<ShareConfig>) => {
        shareConfig = {
            ...shareConfig,
            ...config
        };
    };

    return {
        getShareConfig,
        updateShareConfig
    };
}
